昨天完成了工具安裝。今天把專案的檔案位置定下來,避免後面功能增加後,程式碼和文件散落各處。
這個專案會使用 Monorepo。所有內容放在同一個 Git repository,再依用途分成 backend、frontend、infra 和 docs。對目前的 30 天開發規模來說,這樣比較容易一起管理,也方便從同一份 README 了解整個專案。
| 方式 | 優點 | 缺點 |
|---|---|---|
| Monorepo | 所有內容集中、共用設定簡單 | 需要維持清楚的資料夾規則 |
| 多個 Repo | 各自獨立 | 共享程式碼與設定時需要額外管理 |
目前選 Monorepo。之後如果前後端需要分開部署,再從同一個 repository 建立對應流程。
2026-learning-coach/
│
├── backend/
│ ├── main.py
│ ├── models/
│ ├── api/
│ └── requirements.txt
│
├── frontend/
│ ├── package.json
│ ├── src/
│ └── public/
│
├── infra/
│ ├── docker-compose.yml
│ └── nginx.conf
│
├── docs/
│ ├── prd.md
│ ├── architecture.md
│ └── api.md
│
├── .gitignore
├── README.md
└── .git/
放 FastAPI 應用、API 端點、LangGraph 流程、資料庫連線、ORM 和業務邏輯。
預計結構:
backend/
├── main.py
├── database.py
├── models.py
├── schemas.py
├── api/
│ ├── users.py
│ ├── plans.py
│ └── coach.py
├── agents/
│ ├── planner.py
│ ├── coach.py
│ └── reviewer.py
└── requirements.txt
放 Next.js 應用、React 組件、頁面和路由。
frontend/
├── package.json
├── src/
│ ├── pages/
│ │ ├── login.tsx
│ │ ├── onboarding.tsx
│ │ ├── dashboard.tsx
│ │ └── chat.tsx
│ ├── components/
│ ├── hooks/
│ └── styles/
└── public/
放 Docker Compose、Dockerfile、Nginx 和部署設定。
infra/
├── docker-compose.yml
├── Dockerfile.backend
├── Dockerfile.frontend
└── nginx.conf
放產品需求、系統架構、API 說明、部署指南與架構圖片。
docs/
├── prd.md
├── architecture.md
├── api.md
├── deployment.md
└── images/
進入專案目錄:
cd ~/projects/2026-learning-coach
建立後端、前端、基礎設施與文件資料夾:
mkdir -p backend/api
mkdir -p backend/agents
mkdir -p frontend/src/pages
mkdir -p frontend/src/components
mkdir -p frontend/public
mkdir infra
mkdir -p docs/images
.gitignore 用來排除不應提交的檔案,例如密碼、虛擬環境、node_modules 和暫存資料。
檔案位置:.gitignore
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
.venv
# Node
node_modules/
npm-debug.log
dist/
.next/
# IDE
.vscode/
.idea/
*.swp
# Environment variables
.env
.env.local
# OS
.DS_Store
Thumbs.db
# Database
*.db
*.sqlite
README 先記錄專案用途、資料夾職責與初步啟動方式。
檔案位置:README.md
# 個人化AI學習教練
用30天用Claude Code + Ollama + LangGraph打造AI學習教練系統。Claude Code是開發夥伴,Ollama本機模型才是實際提供對話能力的角色。
## 專案結構
- backend/ - FastAPI後端應用
- frontend/ - Next.js前端應用
- infra/ - Docker和部署配置
- docs/ - 文檔和架構說明
## 快速開始
### 後端
~~~bash
cd backend
python -m pip install -r requirements.txt
python main.py
~~~
### 前端
~~~bash
cd frontend
npm install
npm run dev
~~~
注:這是 Day 23 完成前端時才能用的命令,現在 frontend/ 還是空資料夾,先不要執行。
## 文檔
- [產品需求](docs/prd.md)
- [系統架構](docs/architecture.md)
- [API說明](docs/api.md)
目前 README 的啟動指令先作為預覽,前端和後端完成後再補上實際設定。
檔案位置:docs/architecture.md
# 系統架構
## 整體設計
使用者
↓
Next.js前端(Day 23)
↓
FastAPI後端(Day 6+)
↓
LangGraph Agent(Day 9+)
↓
Ollama本機模型 + SQLite
## 各模塊職責
### 前端(frontend/)
- 用戶登入
- 學習檔案管理
- 計畫檢視
- 每日任務
- 與教練對話
### 後端(backend/)
- REST API端點
- LangGraph Agent流程
- 數據庫操作
- 業務邏輯
### 數據庫
- SQLite檔案存儲
- 用戶、計畫、進度資料
這份文件會跟著架構更新。等資料庫決定後,記得同步調整資料庫段落。
先查看狀態,再提交目前的架構:
git status
git add .
git commit -m "Day 3: 建立Monorepo架構
- 建立backend/、frontend/、infra/、docs/資料夾
- 編寫.gitignore、README.md、architecture.md
- 為專案搭建清晰的目錄結構"
這個 commit 是專案的起點。之後每完成一個可驗證的功能,就用清楚的訊息提交一次。
不用。這是目前的建議結構。只要規則清楚、同一類檔案放在同一個位置,後面可以依實作需要調整。
因為後面新增功能時,檔案位置已經確定。這能減少一邊開發、一邊重新整理結構的情況。
它會防止密碼、環境變數、套件資料夾和資料庫檔案被提交到 Git。
Day 1 ✓ 產品定義完成
Day 2 ✓ 開發環境準備
Day 3 ✓ 專案架構設計
Day 4 ⬜ 資料模型設計
Day 5 ⬜ 實作功能
今天先把檔案和責任分開。明天開始設計資料庫模型,處理使用者、目標、計畫、任務和進度紀錄之間的關係。